<template>
  <div class="shopList">
    <ul>
      <li v-for="item in shoplist" :key="item.id">
        <img :src="item.src" alt="" />
        <div>
          <p>{{ item.title }}</p>
          <p>{{ item.price }}</p>
          <p><button @click="add(item)">加入购物车</button></p>
        </div>
      </li>
    </ul>
  </div>
</template>

<script>
import { mapState } from "vuex";
export default {
  name: "ShopList",
  //可以通过computed计算属性获取store中的数据
  // computed:{
  //   shoplist(){
  //     return this.$store.state.shoplist
  //   }
  // }
  //vuex提供了mapState辅助函数，可以简化cpmputed计算属性的写法
  computed: mapState(["shoplist"]),
  methods: {
    add(item) {
      //组件里是不能直接提交更状态的，可以通过提交一个mutation去变更状态
      // this.$store.commit('add',item)
      this.$store.dispatch("add", item);
    },
  },
};
</script>

<style scoped>
.shopList {
  width: 100%;
  padding-bottom: 50px;
}
li {
  position: relative;
  border-bottom: 1px dashed #ccc;
}
li div {
  position: absolute;
  display: inline-block;
  top: 10px;
  width: 120px;
  line-height: 30px;
  font-size: 14px;
}
img {
  width: 100px;
  border: 1px solid #ccc;
  margin: 10px 10px 0 10px;
}
li div p:nth-child(2) {
  color: #f00;
}
button {
  color: white;
  background: coral;
  border: none;
  padding: 5px;
}
</style>
